package Day18_网络编程.demo2_TCP通信程序.案例_互发;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

/**
 * @author zhangyan
 * @date 2020/5/10 11:11
 */
public class Client {
    public static void main(String[] args) throws Exception {

        /**
         类 main()  运行客户端程序就是客户端
         TCP客户端代码实现步骤
              1.创建客户端Socket对象并指定服务器地址和端口号
              2.调用Socket对象的getOutputStream方法获得字节输出流对象
              3.调用字节输出流对象的write方法往服务器端输出数据
         ------------------开始接收返回信息------------------------
              4.调用Socket对象获得字节输入流,关联连接通道
              5.调用字节输入流对象的read方法读取服务器端返回的数据
              6.关闭Socket对象断开连接。
         */

        //1.创建客户端Socket对象并指定服务器地址和端口号
        Socket socket = new Socket("localhost", 666);

        while (true) {
            //2.使用Socket对象获得字节输出流,关联连接通道
            OutputStream os = socket.getOutputStream();

            //3.使用字节输出流写数据到连接通道
            Scanner sc = new Scanner(System.in);
            System.out.println("输入发给服务端的信息:");
            String massage = sc.nextLine();

            os.write(massage.getBytes());

            //4.调用Socket对象获得字节输入流,关联连接通道
            InputStream is = socket.getInputStream();

            //5.调用字节输入流对象的read方法读取服务器端返回的数据
            byte[] bytes = new byte[8192];
            System.out.println("等待回复...");
            int len = is.read(bytes);
            System.out.println("服务器回复:" + new String(bytes, 0, len));
        }

        //6.关闭Socket对象,自动关流
        //socket.close();

    }
}
